package com.wwj.server.control.codc;

import com.wwj.server.model.Message;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.MessageToByteEncoder;

/**
 * <pre>
 * 数据包格式
 * +——-----——+——-----——+
 * |   长度   |   数据   |
 * +——-----——+——-----——+
 * </pre>
 *
 * @author tysci
 */
public class MessageEncoder extends MessageToByteEncoder<Message> {

    public static int BASE_LENGTH = 4;

    @Override
    protected void encode(ChannelHandlerContext ctx, Message message, ByteBuf buffer) throws Exception {

        //长度
        int length = message == null ? 0 : message.getData().length;
        if (length <= 0) {
            buffer.writeInt(length + BASE_LENGTH);
        } else {
            buffer.writeInt(length + BASE_LENGTH);
            buffer.writeBytes(message.getData());
        }
    }
}
